package com.iplant.base.utils.annotation;

import com.iplant.base.utils.annotation.condition.DBConditionValue;
import com.iplant.base.utils.general.StringUtils;

import java.util.List;

/**
 *
 * @author xiuto
 */
public class DBBaseValue {


    /**
     * 字段名称 必给
     */
    public String name = "";

    /**
     * 字段显示名称
     */
    public String viewName = "";

    /**
     * 表别名 必给
     */
    public String tableAsName = "t";

    /**
     * 将本字段数据配置到对应字段查询条件中
     * 根据viewName相同设置tableAsName与name
     * @param wDBConditionValueList
     */
    public void SetDBConditionValueConfig(List<DBConditionValue> wDBConditionValueList) {
        for (DBConditionValue wDBConditionValue : wDBConditionValueList) {

            //查询条件是否是本字段对应的条件
            if (!wDBConditionValue.viewName.equals(this.viewName)) {
                continue;
            }
            //若是条件中自动补齐表别名、表名，字段名
            wDBConditionValue.tableAsName = this.tableAsName;
            wDBConditionValue.name = this.name;
            wDBConditionValue.Exist=true;
        }
    }

    /**
     * 将本字段添加到查询字段中 并根据设置 生成查询字段sql  如 t.Name、t.ID as TID 等
     */
    public String CreateSelectField() {
        if (this.name.equals(this.viewName)) {
            return StringUtils.Format(" {0}.{1} ", this.tableAsName, this.name);
        } else {
            return StringUtils.Format("{0}.{1} as {2}", this.tableAsName, this.name, this.viewName);
        }
    }
}
